import request from '@/utils/request';
import qs from 'qs';
import type { PageResult, ResponseData } from '../typing';
// 参数接口
export interface GetFinancialStatementPageParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*开始时间 */
    start?: Record<string, unknown>;
    /*结束时间 */
    end?: Record<string, unknown>;
    /*科室id列表 */
    deptIds?: Record<string, unknown>[];
    /*服务类型id列表 */
    serviceTypeIds?: Record<string, unknown>[];
    /* */
    page?: {
        /* */
        records?: {
            /* */
            createTime?: string;
            /* */
            updateTime?: string;
            /* */
            creator?: Record<string, unknown>;
            /* */
            updater?: Record<string, unknown>;
            /*主键 */
            id?: Record<string, unknown>;
            /*工单编号 */
            orderNum?: string;
            /*项目CODE */
            projectCode?: string;
            /*项目名 */
            projectName?: string;
            /*楼栋ID */
            buildingId?: Record<string, unknown>;
            /*楼栋名称 */
            buildingName?: string;
            /*楼层ID */
            floorId?: Record<string, unknown>;
            /*楼层名称 */
            floorName?: string;
            /*科室ID */
            departmentId?: Record<string, unknown>;
            /*科室名 */
            departmentName?: string;
            /*床位号 */
            bedNum?: string;
            /*患者姓名 */
            patientName?: string;
            /*患者电话 */
            patientPhone?: string;
            /*患者性别 */
            patientSex?: string;
            /*既往病史 */
            patientMedicalHistory?: string;
            /*患者联系地址（其他医院时的联系地址） */
            patientAddress?: string;
            /*服务ID */
            serviceId?: Record<string, unknown>;
            /*服务名字 */
            serviceName?: string;
            /*服务类型ID */
            serviceTypeId?: Record<string, unknown>;
            /*服务类型名字 */
            serviceTypeName?: string;
            /*服务单价 */
            serviceTypePrice?: number;
            /*预约开始时间 */
            appointedStartTime?: string;
            /*预约结束时间 */
            appointedEndTime?: string;
            /*预约天数 */
            appointedDay?: number;
            /*实际开始时间 */
            actualStartTime?: string;
            /*实际结束时间 */
            actualEndTime?: string;
            /*实际天数 */
            actualDay?: number;
            /*正常价 */
            priceNormal?: number;
            /*支付价格 */
            payPrice?: number;
            /*工单状态，0取消、1待付款、2待确认、3服务中、4已完成未退款、5待审核、6已审核、7已完成已退款、9退款中（全额退款） */
            orderState?: Record<string, unknown>;
            /*洽谈价（总价） */
            priceTalk?: number;
            /*洽谈价（单价） */
            priceTalkUnit?: number;
            /*支付类型，0预付、1待确认后支付、2线上支付、3现金支付 */
            paymentType?: Record<string, unknown>;
            /*支付时间 */
            payTime?: string;
            /*退款发起端，0用户发起、1员工发起 */
            approvalState?: Record<string, unknown>;
            /*是否发生退款，0否1是 */
            refundOccurs?: Record<string, unknown>;
            /*退款金额 */
            refundPrice?: number;
            /*退款原因 */
            refundReason?: string;
            /*退款时间 */
            refundTime?: string;
            /*是否结算，0否1是 */
            settlement?: Record<string, unknown>;
            /*结算金额 */
            settlementPrice?: number;
            /*结算时间 */
            settlementTime?: string;
            /*工单来源，0用户下单、1员工下单 */
            orderSource?: string;
            /*是否评分，0否1是 */
            giveScore?: Record<string, unknown>;
            /*评分 */
            score?: number;
            /*评分时间 */
            scoreTime?: string;
            /*提交审核日期 */
            flowStartTime?: string;
            /*审核完成日期 */
            flowEndTime?: string;
            /*发票是否上传，0否1是2过期 */
            invoiceUpload?: Record<string, unknown>;
            /*发票号 */
            invoiceNo?: string;
            /*发票地址 */
            invoiceUrl?: string;
            /*备用字段 */
            remark?: string;
            /*创建人 */
            creatorName?: string;
            /*是否居家，0否1是 */
            home?: Record<string, unknown>;
        }[];
        /* */
        total?: Record<string, unknown>;
        /* */
        size?: Record<string, unknown>;
        /* */
        current?: Record<string, unknown>;
        /* */
        orders?: {
            /* */
            column?: string;
            /* */
            asc?: boolean;
        }[];
        /* */
        optimizeCountSql?: boolean;
        /* */
        searchCount?: boolean;
        /* */
        optimizeJoinOfCountSql?: boolean;
        /* */
        maxLimit?: Record<string, unknown>;
        /* */
        countId?: string;
        /* */
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetFinancialStatementPageRes {
    /* */
    code: number;
    /* */
    data: {
        /* */
        size: number;
        /* */
        total: number;
        /* */
        current: number;
        /* */
        records: {
            /*订单id */
            orderId: number;
            /*收款日期 */
            payTime: Record<string, unknown>;
            /*订单号 */
            orderNum: string;
            /*科室 */
            departmentName: string;
            /*床位 */
            bedNum: string;
            /*收费开始日期 */
            actualStartTime: Record<string, unknown>;
            /*收费截止日期 */
            actualEndTime: Record<string, unknown>;
            /*服务天数 */
            actualDay: Record<string, unknown>;
            /*服务模式 */
            serviceTypeName: string;
            /*患者姓名 */
            patientName: string;
            /*金额合计 */
            payPrice: number;
            /*缴款方式 */
            paymentType: string;
        }[];
        /* */
        pages: number;
    };
    /* */
    msg: string;
}
/**
 * 财务报表-分页
 * @param {object} params YfwyMedicalCaregiverFinancialStatementQuery
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {object} params.start 开始时间
 * @param {object} params.end 结束时间
 * @param {array} params.deptIds 科室id列表
 * @param {array} params.serviceTypeIds 服务类型id列表
 * @param {object} params.page
 * @returns
 */
export function getFinancialStatementPage(params: GetFinancialStatementPageParams): Promise<GetFinancialStatementPageRes> {
    return request.post(`/yfwy/caregiver-financial/page`, params);
}
// 参数接口
export interface ExportFinancialStatementListParams {
    /*当前第几页(默认1) */
    current?: number;
    /*每页条数(默认20) */
    size?: number;
    /*开始时间 */
    start?: Record<string, unknown>;
    /*结束时间 */
    end?: Record<string, unknown>;
    /*科室id列表 */
    deptIds?: Record<string, unknown>[];
    /*服务类型id列表 */
    serviceTypeIds?: Record<string, unknown>[];
    /* */
    page?: {
        /* */
        records?: {
            /* */
            createTime?: string;
            /* */
            updateTime?: string;
            /* */
            creator?: Record<string, unknown>;
            /* */
            updater?: Record<string, unknown>;
            /*主键 */
            id?: Record<string, unknown>;
            /*工单编号 */
            orderNum?: string;
            /*项目CODE */
            projectCode?: string;
            /*项目名 */
            projectName?: string;
            /*楼栋ID */
            buildingId?: Record<string, unknown>;
            /*楼栋名称 */
            buildingName?: string;
            /*楼层ID */
            floorId?: Record<string, unknown>;
            /*楼层名称 */
            floorName?: string;
            /*科室ID */
            departmentId?: Record<string, unknown>;
            /*科室名 */
            departmentName?: string;
            /*床位号 */
            bedNum?: string;
            /*患者姓名 */
            patientName?: string;
            /*患者电话 */
            patientPhone?: string;
            /*患者性别 */
            patientSex?: string;
            /*既往病史 */
            patientMedicalHistory?: string;
            /*患者联系地址（其他医院时的联系地址） */
            patientAddress?: string;
            /*服务ID */
            serviceId?: Record<string, unknown>;
            /*服务名字 */
            serviceName?: string;
            /*服务类型ID */
            serviceTypeId?: Record<string, unknown>;
            /*服务类型名字 */
            serviceTypeName?: string;
            /*服务单价 */
            serviceTypePrice?: number;
            /*预约开始时间 */
            appointedStartTime?: string;
            /*预约结束时间 */
            appointedEndTime?: string;
            /*预约天数 */
            appointedDay?: number;
            /*实际开始时间 */
            actualStartTime?: string;
            /*实际结束时间 */
            actualEndTime?: string;
            /*实际天数 */
            actualDay?: number;
            /*正常价 */
            priceNormal?: number;
            /*支付价格 */
            payPrice?: number;
            /*工单状态，0取消、1待付款、2待确认、3服务中、4已完成未退款、5待审核、6已审核、7已完成已退款、9退款中（全额退款） */
            orderState?: Record<string, unknown>;
            /*洽谈价（总价） */
            priceTalk?: number;
            /*洽谈价（单价） */
            priceTalkUnit?: number;
            /*支付类型，0预付、1待确认后支付、2线上支付、3现金支付 */
            paymentType?: Record<string, unknown>;
            /*支付时间 */
            payTime?: string;
            /*退款发起端，0用户发起、1员工发起 */
            approvalState?: Record<string, unknown>;
            /*是否发生退款，0否1是 */
            refundOccurs?: Record<string, unknown>;
            /*退款金额 */
            refundPrice?: number;
            /*退款原因 */
            refundReason?: string;
            /*退款时间 */
            refundTime?: string;
            /*是否结算，0否1是 */
            settlement?: Record<string, unknown>;
            /*结算金额 */
            settlementPrice?: number;
            /*结算时间 */
            settlementTime?: string;
            /*工单来源，0用户下单、1员工下单 */
            orderSource?: string;
            /*是否评分，0否1是 */
            giveScore?: Record<string, unknown>;
            /*评分 */
            score?: number;
            /*评分时间 */
            scoreTime?: string;
            /*提交审核日期 */
            flowStartTime?: string;
            /*审核完成日期 */
            flowEndTime?: string;
            /*发票是否上传，0否1是2过期 */
            invoiceUpload?: Record<string, unknown>;
            /*发票号 */
            invoiceNo?: string;
            /*发票地址 */
            invoiceUrl?: string;
            /*备用字段 */
            remark?: string;
            /*创建人 */
            creatorName?: string;
            /*是否居家，0否1是 */
            home?: Record<string, unknown>;
        }[];
        /* */
        total?: Record<string, unknown>;
        /* */
        size?: Record<string, unknown>;
        /* */
        current?: Record<string, unknown>;
        /* */
        orders?: {
            /* */
            column?: string;
            /* */
            asc?: boolean;
        }[];
        /* */
        optimizeCountSql?: boolean;
        /* */
        searchCount?: boolean;
        /* */
        optimizeJoinOfCountSql?: boolean;
        /* */
        maxLimit?: Record<string, unknown>;
        /* */
        countId?: string;
        /* */
        pages?: Record<string, unknown>;
    };
}

/**
 * 财务报表-导出
 * @param {object} params YfwyMedicalCaregiverFinancialStatementQuery
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {object} params.start 开始时间
 * @param {object} params.end 结束时间
 * @param {array} params.deptIds 科室id列表
 * @param {array} params.serviceTypeIds 服务类型id列表
 * @param {object} params.page
 * @returns
 */
export function exportFinancialStatementList(params: ExportFinancialStatementListParams): Promise<Blob> {
    return request.post(`/yfwy/caregiver-financial/export`, params, {
        responseType: 'blob',
    });
}

/**
 * 获取统计数量
 * @returns
 */
export function getTotalCount(params: GetFinancialStatementPageParams): Promise<ResponseData<any>> {
    return request.post(`/yfwy/caregiver-financial/total`, params);
}
